انواع تصاویر (Image Types)
جعبه ابزار پردازش تصویر چهار نوع تصویر را پشتیبانی میکند:
• Intensity Image
• Binary Images
• Indexed Images
• RGB Images
پردازشهای سیاه و سفید اغلب روی تصاویر Binary و Intensity صورت می گیردو تاکید بیشتری روی این نوع تصاویر خواهیم داشت . با انتخاب یک آستانه ، میتوان تصاویر Intensity را به Binary تبدیل کرد.
تصاویر RGB و Indexed در بحث پردازش تصاویر رنگی استفاده می گردند.
اگر A یک آرایه عددی شامل 0 و 1 باشد ، با دستور زیر این :آرایه به یک آرایه منطقی تبدیل میشود.
B= logical(A)
اگرA شامل مولفه هایی غیر از 0 و 1 باشد تابع فوق مقادیر غیر صفر را به 1 و مقادیر 0 را به 0 منطقی تبدیل میکند.
برای بررسی اینکه آیا یک آرایه است یا نه ، از تابع زیر استفاده میشود :
islogical(B)
اگر B منطقی باشد تابع مقدار 1 و در غیر اینصورت مقدار صفر را برمی گرداند.
یک تصویر با کلاس داده (Data class) و نوع تصویر (Image type) مشخص میگردد:
uint8 intensity image
بعضی توابع در جعبه ابزار ، از تمام کلاس داده ها پشتیبانی میکنند. ولی برخی از آنها فقط از کلاس خاصی پشتیبانی میکنند. به طور مثال ، پیکسلهای یک تصویر باینری فقط می توانند از نوع logical باشند.
تبدیلات کلاس داده ها
فرمت کلی برای تبدیل کلاس دده ها به صورت زیر است :
B=data_class_name(A)
به طور مثال اگرA از نوع uint8 باشد ، دستور زیر آنرا به نوع double تغییر می دهد:
B=double(A).
تابع فوق بسیار متداول است ، چرا که Matlab انتظار دارد عملوندها در محاسبات عددی از نوع double باشند.
اگر C یک متغیر از نوع double باشد دستور زیر آنرا به uint8 تبدیل میکند:
D=uint8(C)
از آنجاییکه محدوده uint8 برابر [0,255] است دستور فوق برای مقادیر کوچکتر از 0 مقدار صفر و برای مقادیر بزرگتر از 255 مقدار 255 قرار می دهد. بنابراین تغییر مقیاس مناسب (proper scaling) قبل از عمل تبدیل ضروری است.
عملگرها (Operators)
عملگرهای Matlab به سه دسته تقسیم می شوند:
• عملگر های محاسباتی (Arithmetic operators)
• عملگرهای رابطه ای (Relational operators)
• عملگرهای منطقی (Logical operators)
عملگرهای محاسباتی
در جعبه ابزار پردازش تصویر ، دستوراتی برای انجام عملیات محاسباتی روی تصاویر وجود دارد. مانند : imadd, imsubtract, immultiply, imdivide
EXAMPLE :
I= imread('rice.png');
J= imread('cameraman.tif');
K= imadd(I,J,'uint16');
figure(1);imshow(I,[])
figure(2);imshow(J,[])
figure(3);imshow(K,[])
عملگرهای رابطه ای
این عملگرها برای مقایسه مولفه های دوماتریس می توانند ا ستفاده شوندو عبارتند از : > ، >= ، < ، <= ، = = ، =~ .
عملگرهای منطقی
AND : با فرمت and(A,B) یا A&B
ماتریسی با ابعاد ورودی ومولفه ها 0 و 1 تتولید میکند. اگر مقدار مولفه ها غیر صفر باشد در محل مولفه مقدار یک و در غیر این صورت صفر قرار می دهد.
OR : با فرمت or(A,B) یا A|B
ماتریسی با ابعاد ورودی و مولفه های 1 و 0 تولید میکند. اگر حداقل یک مولفه غیر صفر باشد در محل مولفه مقدار یک و در غیر این صورت صفر قرار می دهد .
NOT : با فرمت not(A) یا ~A
ماتریسی با ابعاد ورودی تولید می کند که مولفه های صفر ماتریس ورودی را با یک و مولفه های غیر صفر را با صفر پر می کند.
XOR : با فرمت xor(A,B)
اگر هر دو مولفه صفر یا غیرصفر باشند مقدار صفتر و اگ ر یکی صفر و دیگری غیرصفر باشد مقدار یک بر میگرداند.
تابع all : اگر تمام مولفه های بردار غیرصفر باشند مقدار یک و در غیر اینصورت مقدار صفر بر میگرداند.
تابع any : اگر تمام مولفه های یک بردار صفر باشند مقدار صفر و در غیر این صورت یک بر میگرداند.
این دو تابع برای ماتریس به صورت ستونی عمل می کنند(بردارهای ستونی ) .
• Intensity Image
• Binary Images
• Indexed Images
• RGB Images
پردازشهای سیاه و سفید اغلب روی تصاویر Binary و Intensity صورت می گیردو تاکید بیشتری روی این نوع تصاویر خواهیم داشت . با انتخاب یک آستانه ، میتوان تصاویر Intensity را به Binary تبدیل کرد.
تصاویر RGB و Indexed در بحث پردازش تصاویر رنگی استفاده می گردند.
اگر A یک آرایه عددی شامل 0 و 1 باشد ، با دستور زیر این :آرایه به یک آرایه منطقی تبدیل میشود.
B= logical(A)
اگرA شامل مولفه هایی غیر از 0 و 1 باشد تابع فوق مقادیر غیر صفر را به 1 و مقادیر 0 را به 0 منطقی تبدیل میکند.
برای بررسی اینکه آیا یک آرایه است یا نه ، از تابع زیر استفاده میشود :
islogical(B)
اگر B منطقی باشد تابع مقدار 1 و در غیر اینصورت مقدار صفر را برمی گرداند.
یک تصویر با کلاس داده (Data class) و نوع تصویر (Image type) مشخص میگردد:
uint8 intensity image
بعضی توابع در جعبه ابزار ، از تمام کلاس داده ها پشتیبانی میکنند. ولی برخی از آنها فقط از کلاس خاصی پشتیبانی میکنند. به طور مثال ، پیکسلهای یک تصویر باینری فقط می توانند از نوع logical باشند.
تبدیلات کلاس داده ها
فرمت کلی برای تبدیل کلاس دده ها به صورت زیر است :
B=data_class_name(A)
به طور مثال اگرA از نوع uint8 باشد ، دستور زیر آنرا به نوع double تغییر می دهد:
B=double(A).
تابع فوق بسیار متداول است ، چرا که Matlab انتظار دارد عملوندها در محاسبات عددی از نوع double باشند.
اگر C یک متغیر از نوع double باشد دستور زیر آنرا به uint8 تبدیل میکند:
D=uint8(C)
از آنجاییکه محدوده uint8 برابر [0,255] است دستور فوق برای مقادیر کوچکتر از 0 مقدار صفر و برای مقادیر بزرگتر از 255 مقدار 255 قرار می دهد. بنابراین تغییر مقیاس مناسب (proper scaling) قبل از عمل تبدیل ضروری است.
عملگرها (Operators)
عملگرهای Matlab به سه دسته تقسیم می شوند:
• عملگر های محاسباتی (Arithmetic operators)
• عملگرهای رابطه ای (Relational operators)
• عملگرهای منطقی (Logical operators)
عملگرهای محاسباتی
در جعبه ابزار پردازش تصویر ، دستوراتی برای انجام عملیات محاسباتی روی تصاویر وجود دارد. مانند : imadd, imsubtract, immultiply, imdivide
EXAMPLE :
I= imread('rice.png');
J= imread('cameraman.tif');
K= imadd(I,J,'uint16');
figure(1);imshow(I,[])
figure(2);imshow(J,[])
figure(3);imshow(K,[])
عملگرهای رابطه ای
این عملگرها برای مقایسه مولفه های دوماتریس می توانند ا ستفاده شوندو عبارتند از : > ، >= ، < ، <= ، = = ، =~ .
عملگرهای منطقی
AND : با فرمت and(A,B) یا A&B
ماتریسی با ابعاد ورودی ومولفه ها 0 و 1 تتولید میکند. اگر مقدار مولفه ها غیر صفر باشد در محل مولفه مقدار یک و در غیر این صورت صفر قرار می دهد.
OR : با فرمت or(A,B) یا A|B
ماتریسی با ابعاد ورودی و مولفه های 1 و 0 تولید میکند. اگر حداقل یک مولفه غیر صفر باشد در محل مولفه مقدار یک و در غیر این صورت صفر قرار می دهد .
NOT : با فرمت not(A) یا ~A
ماتریسی با ابعاد ورودی تولید می کند که مولفه های صفر ماتریس ورودی را با یک و مولفه های غیر صفر را با صفر پر می کند.
XOR : با فرمت xor(A,B)
اگر هر دو مولفه صفر یا غیرصفر باشند مقدار صفتر و اگ ر یکی صفر و دیگری غیرصفر باشد مقدار یک بر میگرداند.
تابع all : اگر تمام مولفه های بردار غیرصفر باشند مقدار یک و در غیر اینصورت مقدار صفر بر میگرداند.
تابع any : اگر تمام مولفه های یک بردار صفر باشند مقدار صفر و در غیر این صورت یک بر میگرداند.
این دو تابع برای ماتریس به صورت ستونی عمل می کنند(بردارهای ستونی ) .
نظرات شما عزیزان:
+ نوشته شده در 17 آذر 1396 ساعت 17:38 توسط سجاد
| تعداد بازديد : 139